exports.DxfSpec = {
    Section : {
        Tables : {
            5 : { key : 'handle', parse : true, type : 'KV' },
            330 : { key : 'ownerHandle', parse : true, type : 'KV' },
        },
        Entities : {
            0 : { key : 'type', parse : true, type : 'KV'},
            5 : { key : 'handle', parse : true, type : 'KV'},
            6 : { key : 'lineType', parse : true, type : 'KV'},
            8 : { key : 'layer', parse : true, type : 'KV'},
            48 : { key : 'lineTypeScale', parse : true, type : 'KV'},
            60 : { key : 'visible', parse : true, type : 'BOOLEAN', condition: { type : 'EQ', diffValue : 0}},
            62 : { parse : true, type : 'MULTIPLE', specs : [
                { key : 'color', parse : true, type : 'COLOR_IDX'},
                { key : 'colorIndex', parse : true, type : 'KV' }
            ]},
            67 : { key : 'inPaperSpace', parse : true, type : 'BOOLEAN', condition: { type : 'NEQ', diffValue : 0}},
            330 : { key : 'ownerHandle', parse : true, type : 'KV'},
            347 : { key : 'materialObjectHandle', parse : true, type : 'KV'},
            370 : { key : 'lineWeight', parse : true, type : 'KV'},
            420 : { key : 'trueColor', parse : true, type : 'KV'}
        },
        Blocks : {
            1 : { key : 'xrefPath', parse : true, type : 'KV'},
            2 : { key : 'name', parse : true, type : 'KV'},
            3 : { key : 'name2', parse : true, type : 'KV'},
            5 : { key : 'handle', parse : true, type : 'KV'},
            8 : { key : 'layer', parse : true, type : 'KV'},
            10 : { key : 'position', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'position', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'position', parse : true, type : 'POINT', propName : 'z' },
            67 : { key : 'paperSpace', parse : true, type : 'BOOLEAN', condition : { type : 'EQ', diffValue : 1 }} ,
            370 : { key : 'type', parse : true, type : 'KV'},
            330 : { key : 'ownerHandle', parse : true, type : 'KV'},
        }
    },
    Table : {
        Vport : {
            2 : { key : 'name', parse : true, type : 'KV' },
            10 : { key : 'lowerLeftCorner', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'lowerLeftCorner', parse : true, type : 'POINT', propName : 'y' },
            11 : { key : 'upperRightCorner', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'upperRightCorner', parse : true, type : 'POINT', propName : 'y' },
            12 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            22 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            13 : { key : 'snapBasePoint', parse : true, type : 'POINT', propName : 'x' },
            23 : { key : 'snapBasePoint', parse : true, type : 'POINT', propName : 'y' },
            14 : { key : 'snapSpacing', parse : true, type : 'POINT', propName : 'x' },
            24 : { key : 'snapSpacing', parse : true, type : 'POINT', propName : 'y' },
            15 : { key : 'gridSpacing', parse : true, type : 'POINT', propName : 'x' },
            25 : { key : 'gridSpacing', parse : true, type : 'POINT', propName : 'y' },
            16 : { key : 'viewDirectionFromTarget', parse : true, type : 'POINT', propName : 'x' },
            26 : { key : 'viewDirectionFromTarget', parse : true, type : 'POINT', propName : 'y' },
            36 : { key : 'viewDirectionFromTarget', parse : true, type : 'POINT', propName : 'z' },
            17 : { key : 'viewTarget', parse : true, type : 'POINT', propName : 'x' },
            27 : { key : 'viewTarget', parse : true, type : 'POINT', propName : 'y' },
            37 : { key : 'viewTarget', parse : true, type : 'POINT', propName : 'z' },
            42 : { key : 'lensLength', parse : true, type : 'KV' },
            43 : { key : 'frontClippingPlane', parse : true, type : 'KV' },
            44 : { key : 'backClippingPlane', parse : true, type : 'KV' },
            45 : { key : 'viewHeight', parse : true, type : 'KV' },
            50 : { key : 'snapRotationAngle', parse : true, type : 'KV' },
            51 : { key : 'viewTwistAngle', parse : true, type : 'KV' },
            79 : { key : 'orthographicType', parse : true, type : 'KV' },
            110 : { key : 'ucsOrigin', parse : true, type : 'POINT', propName : 'x' },
            120 : { key : 'ucsOrigin', parse : true, type : 'POINT', propName : 'y' },
            130 : { key : 'ucsOrigin', parse : true, type : 'POINT', propName : 'z' },
            111 : { key : 'ucsXAxis', parse : true, type : 'POINT', propName : 'x' },
            121 : { key : 'ucsXAxis', parse : true, type : 'POINT', propName : 'y' },
            131 : { key : 'ucsXAxis', parse : true, type : 'POINT', propName : 'z' },
            112 : { key : 'ucsYAxis', parse : true, type : 'POINT', propName : 'x' },
            122 : { key : 'ucsYAxis', parse : true, type : 'POINT', propName : 'y' },
            132 : { key : 'ucsYAxis', parse : true, type : 'POINT', propName : 'z' },
            330 : { key : 'ownerHandle', parse : true, type : 'KV' }
        },
        Ltype : {
            2 : { key : 'name', parse : true, type : 'KV' },
            3 : { key : 'description', parse : true, type : 'KV' },
            73 : { parse : true, type : 'MULTIPLE', specs : [
                { key : 'pattern', parse : true, type : 'K', valueType : 'LIST' },
                { key : 'patternType', parse : true, type : 'K', valueType : 'LIST' },
            ]},
            40 : { key : 'patternLength', parse : true, type : 'KV' },
            49 : { key : 'pattern', parse : true, type : 'V', valueType : 'LIST' },
            74 : { key : 'patternType', parse : true, type : 'V', valueType : 'LIST' },
        },
        Layer : {
            2 : { key : 'name', parse : true, type : 'KV' },
            6 : { key : 'ltype', parse : true, type : 'KV' },
            62 : { parse : true, type : 'MULTIPLE', specs : [
                { key : 'color', parse : true, type : 'COLOR_IDX'},
                { key : 'visible', parse : true, type : 'BOOLEAN', condition : { type : 'LTEQ', diffValue : 0 } }
            ]},
        }
    },
    Entity : {
        SEQEND: {
            0: { key : 'type', parse : true, type : 'SEQEND' },
        },
        LWPOLYLINE : {
            38 : { key : 'elevation', parse : true, type : 'KV' },
            90 : { key : 'verticesCount', parse : true, type : 'KV' }, //顶点数
            39 : { key : 'depth', parse : true, type : 'KV' },
            70 :  { parse : true, type : 'MULTIPLE', specs : [
                { key : 'shape', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 1, diffValue : 1 }},
                { key : 'hasContinuousLinetypePattern', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 128, diffValue : 128 } }
            ]},
            43 :  { key : 'width', parse : true, type : 'BOOLEAN_VAL', condition : { type : 'NEQ', diffValue : 0 } },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        LWPolyLineVertices : {
            10 : { key : 'x', parse : true, type : 'KV'},
            20 : { key : 'y', parse : true, type : 'KV'},
            30 : { key : 'z', parse : true, type : 'KV'},
            40 : { key : 'startWidth', parse : true, type : 'KV'},
            41 : { key : 'endWidth', parse : true, type : 'KV'},
            42 : { key : 'bulge', parse : true, type : 'BOOLEAN_VAL', condition : { type : 'NEQ', diffValue : 0 } }
        },
        POLYLINE : {
            10 : { key : '', parse : false, type : ''},
            20 : { key : '', parse : false, type : ''},
            30 : { key : '', parse : false, type : ''},
            40 : { key : '', parse : false, type : ''},
            41 : { key : '', parse : false, type : ''},
            71 : { key : '', parse : false, type : ''},
            72 : { key : '', parse : false, type : ''},
            73 : { key : '', parse : false, type : ''},
            74 : { key : '', parse : false, type : ''},
            75 : { key : '', parse : false, type : ''},
            39 : { key : 'thickness', parse : true, type : 'KV'},
            70 :  { parse : true, type : 'MULTIPLE', specs : [
                { key : 'shape', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 1, diffValue : 1 }},
                { key : 'includesCurveFitVertices', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 2, diffValue : 2 }},
                { key : 'includesSplineFitVertices', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 4, diffValue : 4 }},
                { key : 'is3dPolyline', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 8, diffValue : 8 }},
                { key : 'is3dPolygonMesh', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 16, diffValue : 16 }},
                { key : 'is3dPolygonMeshClosed', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 32, diffValue : 32 }},
                { key : 'isPolyfaceMesh', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 64, diffValue : 64 }},
                { key : 'hasContinuousLinetypePattern', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 128, diffValue : 128 } }
            ]},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        VERTEX : {
            50 : { key : '', parse : false, type : ''},
            71 : { key : '', parse : false, type : ''},
            72 : { key : '', parse : false, type : ''},
            73 : { key : '', parse : false, type : ''},
            74 : { key : '', parse : false, type : ''},
            10 : { key : 'x', parse : true, type : 'KV'},
            20 : { key : 'y', parse : true, type : 'KV'},
            30 : { key : 'z', parse : true, type : 'KV'},
            40 : { key : 'startWidth', parse : true, type : 'KV'},
            41 : { key : 'endWidth', parse : true, type : 'KV'},
            42 : { key : 'bulge', type : 'BOOLEAN_VAL', condition : { type : 'NEQ', diffValue : 0 } },
            70 :  { parse : true, type : 'MULTIPLE', specs : [
                { key : 'curveFittingVertex', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 1, diffValue : 1 }},
                { key : 'curveFitTangent', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 2, diffValue : 2 }},
                { key : 'splineVertex', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 8, diffValue : 8 }},
                { key : 'splineControlPoint', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 16, diffValue : 16 }},
                { key : 'threeDPolylineVertex', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 32, diffValue : 32 }},
                { key : 'threeDPolylineMesh', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 64, diffValue : 64 }},
                { key : 'polyfaceMeshVertex', parse : true, type : 'BIT_AND', condition : { type : 'EQ', bitValue : 128, diffValue : 128 } }
            ]}
        },
        LINE : {
            10 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'x', index : 0 },
            20 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'y', index : 0 },
            30 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'z', index : 0 },
            11 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'x', index : 1 },
            21 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'y', index : 1 },
            31 : { key : 'vertices', parse : true, type : 'POINT_DUAL', propName : 'z', index : 1 },
            39 : { key : 'thickness', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        MLINE : {
            2 : { key : 'mLineStyleLabel', parse : true, type : 'KV'},
            340 : { key : 'mLineStyleHandle', parse : true, type : 'KV'},
            40 : { key : 'scale', parse : true, type : 'KV'},
            70 : { key : 'position', parse : true, type : 'KV'},
            71 : { key : 'flag', parse : true, type : 'KV'},
            72 : { key : 'verticesCount', parse : true, type : 'KV' },
            73 : { key : 'styleCount', parse : true, type : 'KV' },
            10 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'z' },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        MLineVertex: {
          11 : { key : 'x', parse : true, type : 'KV'},
          21 : { key : 'y', parse : true, type : 'KV'},
          31 : { key : 'z', parse : true, type : 'KV'},
        },
        MLineSegment: {
          12 : { key : 'x', parse : true, type : 'KV'},
          22 : { key : 'y', parse : true, type : 'KV'},
          32 : { key : 'z', parse : true, type : 'KV'},
        },
        MLineMiter: {
          13 : { key : 'x', parse : true, type : 'KV'},
          23 : { key : 'y', parse : true, type : 'KV'},
          33 : { key : 'z', parse : true, type : 'KV'},
        },
        TEXT : {
            10 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'z' },
            40 : { key : 'textHeight', parse : true, type : 'KV'},
            41 : { key : 'xScale', parse : true, type : 'KV'},
            50 : { key : 'rotation', parse : true, type : 'KV'},
            1 : { key : 'text', parse : true, type : 'TEXT'},
            72 : { key : 'halign', parse : true, type : 'KV'},
            73 : { key : 'valign', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        MTEXT : {
            1 : { key : 'text', parse : true, type : 'TEXT'},
            3 : { key : 'text', parse : true, type : 'TEXT_APPEND'},
            10 : { key : 'position', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'position', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'position', parse : true, type : 'POINT', propName : 'z' },
            40 : { key : 'textHeight', parse : true, type : 'KV'},
            41 : { key : 'xScale', parse : true, type : 'KV'},
            50 : { key : 'rotation', parse : true, type : 'KV'},
            71 : { key : 'attachmentPoint', parse : true, type : 'KV'},
            72 : { key : 'drawingDirection', parse : true, type : 'KV'},

        },
        ATTDEF : {
            1 : { key : 'text', parse : true, type : 'KV'},
            2 : { key : 'tag', parse : true, type : 'KV'},
            3 : { key : 'prompt', parse : true, type : 'KV'},
            7 : { key : 'scanner', parse : true, type : 'KV'},
            10 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'z' },
            39 : { key : 'thickness', parse : true, type : 'KV'},
            40 : { key : 'textHeight', parse : true, type : 'KV'},
            41 : { key : 'scale', parse : true, type : 'KV'},
            50 : { key : 'rotation', parse : true, type : 'KV'},
            51 : { key : 'obliqueAngle', parse : true, type : 'KV'},
            72 : { key : 'halign', parse : true, type : 'KV'},
            73 : { key : 'valign', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        ATTRIB : {
            1 : { key : 'text', parse : true, type : 'KV'},
            2 : { key : 'tag', parse : true, type : 'KV'},
            3 : { key : 'prompt', parse : true, type : 'KV'},
            7 : { key : 'scanner', parse : true, type : 'KV'},
            10 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'z' },
            39 : { key : 'thickness', parse : true, type : 'KV'},
            40 : { key : 'textHeight', parse : true, type : 'KV'},
            41 : { key : 'scale', parse : true, type : 'KV'},
            50 : { key : 'rotation', parse : true, type : 'KV'},
            51 : { key : 'obliqueAngle', parse : true, type : 'KV'},
            72 : { key : 'halign', parse : true, type : 'KV'},
            73 : { key : 'valign', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        CIRCLE : {
            10 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'center', parse : true, type : 'POINT', propName : 'z' },
            40 : { key : 'radius', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        ARC : {
            10 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'center', parse : true, type : 'POINT', propName : 'z' },
            40 : { key : 'radius', parse : true, type : 'KV'},
            50 : { key : 'startAngle', parse : true, type : 'KV'},
            51 : { key : 'endAngle', parse : true, type : 'KV'},
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        DIMENSION : {
            1 : { key : 'text', parse : true, type : 'KV'},
            2 : { key : 'block', parse : true, type : 'KV'},
            3 : { key : 'dimensionStyleName', parse : true, type : 'KV'},
            70 : { key : 'dimensionType', parse : true, type : 'KV'},
            71 : { key : 'attachmentPoint', parse : true, type : 'KV'},
            42 : { key : 'actualMeasurement', parse : true, type : 'KV'},
            50 : { key : 'angle', parse : true, type : 'KV'},
            10 : { key : 'anchorPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'anchorPoint', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'anchorPoint', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'middleOfText', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'middleOfText', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'middleOfText', parse : true, type : 'POINT', propName : 'z' },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        DimensionAligned : {
            12 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'x' },
            22 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'y' },
            32 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'z' },
            13 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'x' },
            23 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'y' },
            33 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'z' },
            14 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'x' },
            24 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'y' },
            34 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'z' },
        },
        DimensionAngular : {
            13 : { key : 'firstStartPoint', parse : true, type : 'POINT', propName : 'x' },
            23 : { key : 'firstStartPoint', parse : true, type : 'POINT', propName : 'y' },
            33 : { key : 'firstStartPoint', parse : true, type : 'POINT', propName : 'z' },
            14 : { key : 'firstEndPoint', parse : true, type : 'POINT', propName : 'x' },
            24 : { key : 'firstEndPoint', parse : true, type : 'POINT', propName : 'y' },
            34 : { key : 'firstEndPoint', parse : true, type : 'POINT', propName : 'z' },
            15 : { key : 'secondStartPoint', parse : true, type : 'POINT', propName : 'x' },
            25 : { key : 'secondStartPoint', parse : true, type : 'POINT', propName : 'y' },
            35 : { key : 'secondStartPoint', parse : true, type : 'POINT', propName : 'z' },
            16 : { key : 'secondEndPoint', parse : true, type : 'POINT', propName : 'x' },
            26 : { key : 'secondEndPoint', parse : true, type : 'POINT', propName : 'y' },
            36 : { key : 'secondEndPoint', parse : true, type : 'POINT', propName : 'z' },
        },
        DimensionLinear : {
            52 : { key : 'rotationAngle', parse : true, type : 'KV'},
            12 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'x' },
            22 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'y' },
            32 : { key : 'clonePoint', parse : true, type : 'POINT', propName : 'z' },
            13 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'x' },
            23 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'y' },
            33 : { key : 'firstExtensionPoint', parse : true, type : 'POINT', propName : 'z' },
            14 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'x' },
            24 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'y' },
            34 : { key : 'secondExtensionPoint', parse : true, type : 'POINT', propName : 'z' },
        },
        DimensionOrdinate : {
            13 : { key : 'targetEndPoint', parse : true, type : 'POINT', propName : 'x' },
            23 : { key : 'targetEndPoint', parse : true, type : 'POINT', propName : 'y' },
            33 : { key : 'targetEndPoint', parse : true, type : 'POINT', propName : 'z' },
            14 : { key : 'textEndPoint', parse : true, type : 'POINT', propName : 'x' },
            24 : { key : 'textEndPoint', parse : true, type : 'POINT', propName : 'y' },
            34 : { key : 'textEndPoint', parse : true, type : 'POINT', propName : 'z' },
        },
        DimensionRadial : {
            40 : { key : 'radius', parse : true, type : 'KV'},
            15 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            25 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            35 : { key : 'center', parse : true, type : 'POINT', propName : 'z' },
        },
        SOLID : {
            10 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'x', index : 0 },
            20 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'y', index : 0 },
            30 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'z', index : 0 },
            11 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'x', index : 1 },
            21 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'y', index : 1 },
            31 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'z', index : 1 },
            12 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'x', index : 2 },
            22 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'y', index : 2 },
            32 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'z', index : 2 },
            13 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'x', index : 3 },
            23 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'y', index : 3 },
            33 : { key : 'points', parse : true, type : 'POINT_SOLID', propName : 'z', index : 3 },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        INSERT : {
            2 : { key : 'name', parse : true, type : 'KV'},
            50 : { key : 'rotation', parse : true, type : 'KV'},
            70 : { key : 'columnCount', parse : true, type : 'KV'},
            71 : { key : 'rowCount', parse : true, type : 'KV'},
            44 : { key : 'columnSpacing', parse : true, type : 'KV'},
            45 : { key : 'rowSpacing', parse : true, type : 'KV'},
            66 : { key : 'attributeFlow', parse : true, type : 'KV'},
            66: { key : 'attributeFlows', parse : true, type : 'CELL' },
            41 : { key : 'scale', parse : true, type : 'POINT', propName : 'x' },
            42 : { key : 'scale', parse : true, type : 'POINT', propName : 'y' },
            43 : { key : 'scale', parse : true, type : 'POINT', propName : 'z' },
            10 : { key : 'position', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'position', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'position', parse : true, type : 'POINT', propName : 'z' },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        ELLIPSE : {
            10 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'center', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'majorAxisEndPoint', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'majorAxisEndPoint', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'majorAxisEndPoint', parse : true, type : 'POINT', propName : 'z' },
            40 : { key : 'axisRatio', parse : true, type : 'KV'},
            41 : { key : 'startAngle', parse : true, type : 'KV'},
            42 : { key : 'endAngle', parse : true, type : 'KV'},
            2 : { key : 'name', parse : true, type : 'KV'},
        },
        POINT : {
            39 : { key : 'thickness', parse : true, type : 'KV'},
            10 : { key : 'position', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'position', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'position', parse : true, type : 'POINT', propName : 'z' },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
        },
        LEADER : {
            3 : { key : 'dimensionStyleName', parse : true, type : 'KV'},
            71 : { key : 'arrowFlag', parse : true, type : 'BOOLEAN_VAL', condition : { type : 'EQ', diffValue : 1 }},
            72 : { key : 'dimensionEdgeType', parse : true, type : 'KV'},
            73 : { key : 'dimensionFlag', parse : true, type : 'KV'},
        },
        XLine : {
            10 : { key : 'point', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'point', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'point', parse : true, type : 'POINT', propName : 'z' },
            11 : { key : 'vectors', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'vectors', parse : true, type : 'POINT', propName : 'y' },
            31 : { key : 'vectors', parse : true, type : 'POINT', propName : 'z' },
        },
        SPLINE : {
            210 : { key : 'normalPoint', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'normalPoint', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'normalPoint', parse : true, type : 'POINT', propName : 'z' },
            70 : { key : 'splineFlag', parse : true, type : 'KV' },
        },
        HATCH : {
            2 : { key : 'name', parse : true, type : 'KV'},
            10 : { key : 'point', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'point', parse : true, type : 'POINT', propName : 'y' },
            30 : { key : 'point', parse : true, type : 'POINT', propName : 'z' },
            210 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'x' },
            220 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'y' },
            230 : { key : 'extrusionDirection', parse : true, type : 'POINT', propName : 'z' },
            70 : { key : 'fillFlag', parse : true, type : 'KV' },
            71 : { key : 'relationFlag', parse : true, type : 'KV' },
            91 : { key : 'patternType', parse : true, type : 'KV' }
        },
        HatchLoop : {
            92 : { key : 'edgeFlag', parse : true, type : 'KV' },
            93 : { key : 'edgeCount', parse : true, type : 'KV' },
        },
        HatchLineEdge : {
            10 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'startPoint', parse : true, type : 'POINT', propName : 'y' },
            11 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'x' },
            21 : { key : 'endPoint', parse : true, type : 'POINT', propName : 'y' },
        },
        HatchArcEdge : {
            10 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            40 : { key : 'radius', parse : true, type : 'KV'},
            50 : { key : 'startAngle', parse : true, type : 'KV'},
            51 : { key : 'endAngle', parse : true, type : 'KV'},
            73 : { key : 'clockReverse', parse : true, type : 'KV'},
        },
        HatchEllipseEdge : {
            10 : { key : 'center', parse : true, type : 'POINT', propName : 'x' },
            20 : { key : 'center', parse : true, type : 'POINT', propName : 'y' },
            11 : { key : 'destination', parse : true, type : 'POINT', propName : 'x' },
            22 : { key : 'destination', parse : true, type : 'POINT', propName : 'y' },
            40 : { key : 'radius', parse : true, type : 'KV'},
            50 : { key : 'startAngle', parse : true, type : 'KV'},
            51 : { key : 'endAngle', parse : true, type : 'KV'},
            73 : { key : 'clockReverse', parse : true, type : 'KV'},
        },
        HatchSplineEdge : {

        },
        HatchEdge : {

        },
        HatchPattern : {

        },
        WIPEOUT : {
          90 : { key : 'classVersion', parse : true, type : 'KV' },
          10 : { key : 'point', parse : true, type : 'POINT', propName : 'x' },
          20 : { key : 'point', parse : true, type : 'POINT', propName : 'y' },
          30 : { key : 'point', parse : true, type : 'POINT', propName : 'z' },
          11 : { key : 'uVectors', parse : true, type : 'POINT', propName : 'x' },
          21 : { key : 'uVectors', parse : true, type : 'POINT', propName : 'y' },
          31 : { key : 'uVectors', parse : true, type : 'POINT', propName : 'z' },
          12 : { key : 'vVectors', parse : true, type : 'POINT', propName : 'x' },
          22 : { key : 'vVectors', parse : true, type : 'POINT', propName : 'y' },
          32 : { key : 'vVectors', parse : true, type : 'POINT', propName : 'z' },
          13 : { key : 'imageUSizeInPixel', parse : true, type : 'KV' },
          23 : { key : 'imageVSizeInPixel', parse : true, type : 'KV' },
          340 : { key : 'imagedefXref', parse : true, type : 'KV' },
          70 : { key : 'imageDisplayProperty', parse : true, type : 'KV' },
          280 : { key : 'ClippingState', parse : true, type : 'BOOLEAN', condition: { type : 'EQ', diffValue : 1}},
          281 : { key : 'Brightness', parse : true, type : 'KV' },
          282 : { key : 'Contrast', parse : true, type : 'KV' },
          283 : { key : 'Fade', parse : true, type : 'KV' },
          360 : { key : 'imagedefReactorXref', parse : true, type : 'KV' },
          71 : { key : 'ClippingBoundary', parse : true, type : 'KV' },
          91 : { key : 'NumberOfClipBoundaryVertices', parse : true, type : 'KV' },
          14 : { key : 'ClipBoundaryVertex', parse : true, type : 'V', valueType : 'LIST' },
          24 : { key : 'ClipBoundaryVertexY', parse : true, type : 'V', valueType : 'LIST' },
        }
    }
};
